Bar code symbologies were first disclosed in U.S. Pat. No. 1,985,035 by Kermode and expanded shortly thereafter in the 1930's in U.S. Pat. No. 2,020,925 by Young, assigned to Westinghouse. These early symbolozies were printed by generating a multiplicity of single width elements of lower reflectance, or "bars," which were separated by elements of higher reflectance, or "spaces." An "element" is a bar or space. These early symbologies, and many "bar code symbologies" used today can be referred to as "linear symbologies" because data in a given symbol is decoded along one axis or direction. Symbologies such as linear symbologies encode "data characters" (e.g, human readable characters) as "symbol characters," which are generally parallel arrangements of alternating bars and spaces that form unique groups of patterns to encode specific data characters. Data characters include not only human readable characters, but also include special function characters such as start, stop or shift characters that provide certain functional data. Each unique group or pattern of bars and spaces within a predetermined width defines a particular symbol character, and thus a particular data character or characters.
The known U.P.C. symbology was described generically by Savir and Laurer of IBM as a (7,2) "n,k code" in 1974. An "n,k code" is defined as a symbology where each symbol character has an "k" number of bars and spaces and whose total length is "n" modules long. Therefore, the U.P.C. symbology encodes two bars and two spaces in each symbol character and each symbol character is seven modules long. A "module" is the narrowest nominal width unit of measure in a bar code symbology (a one-wide bar or space). "Nominal" refers to the intended value of a specific parameter, regardless of printing errors, etc. Under common counting techniques, the number of possible symbol characters can be found by realizing that in seven modules, there are six locations where a transition can occur, and that for two bars and two spaces, there are three internal transitions. Therefore, the number of unique symbol characters for the U.P.C. symbology is simply 6 choose 3 which equals 20. Similarly, under the Code 128 symbology, which is an (11,3) symbology, 252 unique symbol characters are available (10 choose 5).
The bar code symbologies known as U.P.C., EAN, Code 11 and Codabar are all bar code symbology standards which support only numeric data characters, and a few special characters such as "+" and "-". The U.P.C. symbology is both a bar code standard, as well as an industry standard, in that it has been adopted by industry in a standard application (consumer goods). The bar code standard Code 39 was the first alphanumeric bar code symbology standard developed. However, it was limited to 43 characters.
Code 93 is an improvement over Code 39. Code 93 is a continuous bar code symbology employing four element widths. Each Code 93 symbol has nine modules that may be either black or white (either a bar or a space). Each symbol in the Code 93 standard contains three bars and three spaces (six elements), whose total length is nine modules long. Code 93, having nine modules and three bars per symbol is thus a (9,3) symbology which has 56 possible characters (8 choose 5). For edge to edge decoding reasons, the Code 93 symbology standard defines only 48 unique symbols, and thus is able to define 47 characters in its character set plus a start/stop code. The 47 characters include the numeric characters 0-9, the alphabetic characters A-Z, some additional symbols and four shift codes.
The computer industry uses its own character encoding standards, namely, the American Standard Code for Information Interchange (ASCII). ASCII defines a character set containing 128 characters and symbols. Each character in ASCII is represented by a unique 7-bit code. Since Code 39 and Code 93 are limited to fewer than 50 characters, these standards are inadequate to uniquely represent each ASCII character. The four shift codes in Code 93, however, allow this standard to unambiguously represent all 128 ASCII characters. One drawback is that a series of two Code 93 symbols are required to represent a single ASCII character. Thus, bar code labels representing characters in the ASCII character set are twice as long as labels representing characters in the Code 93 character set.
New bar code symbology standards, such as Code 128, were developed to encode the complete ASCII character set, however, these standards suffer from certain shortcomings, including requiring shift codes or other preceding symbols to represent certain characters. All of these symbologies require increased processing time and overhead to process the entire ASCII character set.
The computer industry has grown beyond the limits of the ASCII character set. As the computer markets have grown, the need to support additional languages not defined by the ASCII character set has also arisen. New character sets were developed to accommodate clusters of characters in related languages. The original 7-bit ASCII character set was expanded to 8 bits thus providing an additional 128 characters or data values. This additional 128 set of data values (the "upper 128") allowed for additional characters present in the related romance languages (i.e., French, German. Spanish, etc.) to be represented.
As the computer markets grew internationally, however, even more languages were required to be included in the character set. Particularly, the Asian markets demanded a character set, usable on computers, which supported thousands of unique characters. To uniquely define each of these characters, a 16-bit encoding standard was required.
Several 16-bit encoding standards such as Unicode, JISC-6226-1983, and others have recently been developed. The Unicode character encoding standard is a fixed-length, uniform text and character encoding standard. The Unicode standard may contain up to 65,536 characters, and currently contains over 28,000 characters mapping onto the world's scripts, including Greek, Hebrew, Latin, Japanese, Chinese, Korean, and Taiwanese. The Unicode standard is modeled on the ASCII character set. Unicode character values are consistently 16 bits long, regardless of language, so no escape sequence or control code is required to specify any character in any language. Unicode character encoding treats symbols, alphabetic characters, and ideographic characters identically, so that they can be used in various computer applications simultaneously and with equal facility. Computer programs using Unicode character encoding to represent characters, but which do not display or print text, can remain unaltered when new scripts or characters are introduced.
New computer operating systems are beginning to support these comprehensive 16-bit code standards, e.g., WINDOWS NT, manufactured by Microsoft Corporation of Redmond, Wash. The data collection industry, however, has failed to keep pace with the computer industry. No system currently exists for readily encoding the 16-bit computer character codes into bar code symbols. Therefore, there is a need to support these 16-bit computer character standards in the data collection industry, particularly for bar code symbologies.
Furthermore, most alphanumeric bar code symbologies are inefficient when used to encode a long series of numbers. When encoding a series of decimal numbers using Code 93 for example, the 26 bar code symbols reflecting the 26 alphabetic characters are not used. Therefore, there is a need to allow these alphanumeric bar code symbologies to more efficiently represent a long series of numbers.
As is known, data characters encoded under nearly all symbologies can result in errors when decoded by a laser scanner or other bar code reader. To reduce errors, certain symbologies include check characters. A "check character" is a symbol character included within a given bar code symbol (usually at the end of the symbol characters, although placement is not important to its function) whose value is used to perform a mathematical check that determines whether the symbol has been decoded correctly.
For example, the known Code 39 symbology has an optional modulo 43 check character that can be included as the last symbol character in a symbol. The Code 39 check character is calculated by determining a character value for each data character in an original message, adding together all of the character values, and dividing the sum by 43. The check character becomes the remainder that results from such division, and is appended to the end of a label encoded from the message. A "character value" or "symbol code" is a number representing a data character in a given symbology. For example, in the Code 39 symbology, the data character "A" has a character value of "10".
The Code 39 symbology employs 43 symbol characters, which is a prime number of symbol characters. Therefore, using modulo 43 mathematics to generate a check character, a unique check character for any given series of data characters will always result. The U.P.C. symbology, however, employs a modulo 10 check character. Since 10 is a non-prime number having factors of 1, 2 and 5, and therefore a modulo 10 checking detects fewer errors. As a result, the U.P.C. symbology application environment employs a data base having a look-up table to compensate for such a shortcoming of the checking scheme.
Other symbologies improve upon the use of check characters, by employing error correction characters. Error correction characters, as with check characters, are calculated mathematically from the other symbol characters in a symbol or label. Error correction characters are symbol characters in a label that are reserved for erasure correction, error correction, and/or error detection. An erasure is a missing, unscanned, or undecodable symbol character; the symbol character's position is known, but not its value. An erasure can result from portions of a symbol having insufficient contrasts, a symbol that falls outside of a reader's field of view, or a portion of which is obliterated. An error is a mis-decoded or mis-located symbol character; both the position and the value of the symbol character are unknown. An error can result from random spots or voids in a symbol when this symbol is printed.
For an error, the error correction characters allow a reader to use these characters in a symbol to locate and correct errors that have unknown values and locations. Two error correction characters are required to correct each error; one error correction character to locate the erroneous symbol character, and the second error correction character to determine what value the erroneous symbol character should have been. For an erasure, the error correction characters allow a reader to use these characters to correct erroneous or missing symbol characters that have known locations. Consequently, only one error correction character is required for each erasure.
Some symbologies, such as Code One and PDF417, have many error correction characters. The Code One symbology, for example, is specifically designed with 27%-50% of the symbol characters allocated to error correction. Consequently, the Code One symbology allows for very secure decoding that mathematically is many orders-of-magnitude more accurate than other symbologies that simply use check characters. However, such error correction characters necessarily require additional area in a label, and therefore reduce the information-density of the label. Additionally. the Code One and PDF417 symbologies are areaor stacked symbologies. As a result, they require a more sophisticated, and thus expensive, reader to decode them.
Typical bar code scanners read bar codes by producing different analog waveforms from bar codes having variable width bars and spaces. When the scanner fails to fully resolve the smallest, one-wide elements, only the wider elements (i.e., two-wide or larger width elements) become resolved. A bar or space is "resolved" if the scanner is able to identify a peak or valley in the wave form that corresponds to the given bar or space. Overall, there is a need to provide a symbology that overcomes all of the shortcomings of known symbologies, is capable of being decoded when unresolved or out-of-focus, and is highly secure.